<?php
namespace app\controller;

use think\facade\Db;
use think\facade\Request;
use think\facade\Validate;

class Login
{
    public function index()
    {
        session_start(); // 开启会话

        try {
            $data = Request::post();
            // 记录接收到的数据
            error_log(print_r($data, true));

            // 验证输入数据
            $validate = Validate::rule([
                'usernum' => 'require|max:25', // 学号必填，且长度不超过25
                'password' => 'require|min:6', // 密码必填，且长度不少于6
            ]);

            if (!$validate->check($data)) {
                return json(['code' => 1, 'msg' => $validate->getError()]); // 返回验证错误信息
            }

            // 检查学号是否存在
            $user = Db::name('cdydpt_user')->where('usernum', $data['usernum'])->find();
            if (!$user) {
                return json(['code' => 1, 'msg' => '学号错误']); // 返回学号错误信息
            }

            // 验证密码
            if (!password_verify($data['password'], $user['password'])) {
                return json(['code' => 1, 'msg' => '密码错误']); // 返回密码错误信息
            }

            // 创建会话
            $_SESSION['user'] = $user;

            // 设置Cookie
            setcookie('PHPSESSID', session_id(), time() + 3600, '/'); // 有效期1小时

            // 确保返回的数据是UTF-8编码
            $user = array_map('utf8_encode', $user);

            return json(['code' => 0, 'msg' => '登录成功', 'data' => ['status' => 1, 'userInfo' => $user]]); // 返回登录成功信息
        } catch (\Exception $e) {
            // 记录异常信息
            error_log($e->getMessage());
            return json(['code' => 1, 'msg' => '内部服务器错误']); // 返回服务器错误信息
        }
    }

    public function check()
    {
        session_start(); // 开启会话

        if (isset($_SESSION['user'])) {
            // 确保返回的数据是UTF-8编码
            $user = array_map('utf8_encode', $_SESSION['user']);
            return json(['code' => 0, 'data' => ['status' => 1, 'userInfo' => $user]]);
        } else {
            return json(['code' => 1, 'msg' => '未登录']);
        }
    }


}
